block structure
Programs are composed of blocks which look and act like units. Most block structures
can be nested, which means located inside other blocks. To promote clarity,
readability, and visibility of program structure, source lines in block structures should
be indented by a tab or two spaces.
Functions are the outermost blocks. Within functions, five block structures are
common:
░ IF ... END IF
░ SELECT CASE ... END SELECT
░ DO ... LOOP
░ FOR ... NEXT
░ SUB ... END SUB
Except for functions and subroutines, blocks can be nested. It is common to find
these blocks nested several levels deep in many programs.
Each block must fully enclose all blocks within it. In other words, a block must end
before any block in which it is imbedded. This does not mean that execution necessarily
proceeds through blocks in the order of the source program. Statements exist to control
execution within and between blocks, and for multi-level exits.
The reference section describes statements that control execution in and between blocks,
including:
░ DO DO
░ DO LOOP
░ DO FOR
░ DO NEXT
░ EXIT DO
░ EXIT IF
░ EXIT FOR
░ EXIT FUNCTION
░ EXIT SUB
░ EXIT SELECT
░ NEXT CASE
execution order
Execution need not proceed linearly through blocks. DO xxx and EXIT xxx statements
control the execution path through blocks. For example, it is perfectly acceptable
to do the next iteration of a DO loop by executing a DO DO or DO LOOP statement, even if
there are other blocks between the ends of the DO block and the DO DO or DO LOOP.
multi-level control
Multi-level DO xxx # and EXIT xxx # statements are provided. For example, EXIT DO 2
escapes two levels of DO loops instead of just one, DO DO 3 jumps to the DO statement
three levels back, and DO LOOP 1 is the same as DO LOOP.
If you modify code near multi-level statements, be careful to adjust the # level counts as
necessary.